Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Camera state management #990

Merged
merged 4 commits into from
Jan 22, 2022
Merged

fix: Camera state management #990

merged 4 commits into from
Jan 22, 2022

Conversation

M123-dev
Copy link
Member

Yet another fix for the camera + some further extractions

@github-actions github-actions bot added the 🤳🥫 Scan We need to be able to scan on low-end, old devices, even with a bad camera, connexion… label Jan 20, 2022
Copy link
Contributor

@monsieurtanuki monsieurtanuki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @M123-dev!
Good job, but with some renaming it could be much better - cf. my comments.

@M123-dev
Copy link
Member Author

Thanks for your review @monsieurtanuki, applied your suggestions

Copy link
Contributor

@monsieurtanuki monsieurtanuki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @M123-dev, and sorry about the following remarks:

  • please rename the file too, something like lifecycle_manager.dart
  • I took the names from Android lifecycle, so it's either (onStart and onStop) or (onResume and onPause). I suggest (onResume and onPause) in order to avoid the question "is there an onRestart too?"

final CameraDescription camera = cameras[_cameraIndex];
_controller = CameraController(

final CameraController cameraController = CameraController(
camera,
ResolutionPreset.high,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

have we tested other resolutions ? does it influence the scanning a lot ? it could alleviate some of the resource concerns

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No not tested in any way, just took high that we have a "high" resolution, we fill nearly the full screen with the preview but not max so that we don't spend too much performance. After all it's just the preview not how much we get from the camera which very likely needs more performance.

return;
_controller = cameraController;

// If the controller is updated then update the UI.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

out of curiousity, when does the listener fire, in other words, what does "controller is updated" mean?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I am right this is used to update the page from showing a loading indicator to display the camera preview.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok we should confirm that, because it's rerendering the widget.

_controller = cameraController;

// If the controller is updated then update the UI.
cameraController.addListener(() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we keep adding this listener every time _startLiveFeed is called, shouldn't we do it just once?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We only call _startLiveFeed once (and again but then the controller is already disposed) so it shouldn't matter.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we also call _startLiveFeed from LifeCycleManager.onResume, so in the two cases you described below.

child: Center(
key: ValueKey<bool>(stoppingCamera),
child: CameraPreview(
_controller!,
),
),
);
}

Future<void> _startLiveFeed() async {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

out of curiosity when is _startLiveFeed called?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In initState after checking which camera to use.

Copy link
Contributor

@jasmeet0817 jasmeet0817 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PTAL, have lots of questions

@jasmeet0817
Copy link
Contributor

Yet another fix for the camera + some further extractions

What does it fix ?

if (state == AppLifecycleState.inactive) {
widget.onStop.call();
} else if (state == AppLifecycleState.resumed) {
widget.onResume.call();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible for you to explain in comments when AppLifeCycleState and when onVisibilityChanged is called, both call onStop or onResume and right now as a reader I don't understand changes on the camera on device trigger what...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For short, the visibility is if the scanner is currently displayed. So if it is the currently selected tab and it is also triggered if another page like search or the product page is above it.

The life cycle status is from the whole app. So this is triggered when the app is minimized and put back into focus again (useful for #982).

The two functions are just stopping and restarting the camera.

@M123-dev
Copy link
Member Author

M123-dev commented Jan 21, 2022

Yet another fix for the camera + some further extractions

What does it fix?

@jasmeet0817

There were some minor problems with disposing of the camera.

When going to another page or closing the camera it only stopped the image stream and not disposed the camera so for the system it was still active. (This is what caused #982)

The extraction part is just moving the life cycle management into its own widget.

Before:

ScanPage
-ML
--Overlay+life cycle

-QR Scanner
--Overlay+life cycle

Now:

ScanPage
-Overlay

-ML
--life cycle

-QR Scanner
--life cycle

The life cycle has to be below the scanners since we pass the stop and start methods.

@M123-dev
Copy link
Member Author

Thanks for your review @jasmeet0817 and @monsieurtanuki you are right some renaming and commenting would be useful.

I, unfortunately, can't work on it until Monday if anyone of you wants to add those things feel free to do so that we can try the changes a bit faster.

@monsieurtanuki monsieurtanuki self-requested a review January 22, 2022 09:53
Copy link
Contributor

@monsieurtanuki monsieurtanuki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@M123-dev I'll take care of the renaming.

@monsieurtanuki monsieurtanuki merged commit 72a2f27 into develop Jan 22, 2022
@monsieurtanuki monsieurtanuki deleted the camera-state-fix branch January 22, 2022 09:54
M123-dev added a commit that referenced this pull request Jan 23, 2022
commit 738fdf9
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sun Jan 23 16:43:17 2022 +0100

    autolabeler-issue-improvements (#1001)

    autolabeler-issue-improvements

commit 5fe7abc
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 21:07:51 2022 +0100

    Update issue-labeler-v1.yml

commit 9b227cb
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 21:06:22 2022 +0100

    Update issue-labeler-v1.yml

commit 20fce2e
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 21:03:22 2022 +0100

    Update and rename issue-labeler.yml to issue-labeler-v1.yml

commit 63ae13a
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 21:01:45 2022 +0100

    Update issue-label.yml

commit a1051cc
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 20:58:39 2022 +0100

    Rename issue-autolabel.yml to issue-labeler.yml

commit bf977a5
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 20:56:19 2022 +0100

    Create issue-label.yml (#1000)

    * Create issue-label.yml

    * Create issue-autolabel.yml

commit 8adcc60
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 20:50:55 2022 +0100

    Update labeler.yml

commit 8cbca14
Author: Moises <50844424+gatodenegocios@users.noreply.github.com>
Date:   Sat Jan 22 13:13:08 2022 -0300

    fix: bug "Smooth Simple Button" in "SmoothAlertDialogue". issue #993 (#994)

    * feat: 🎸 create 'smooth action button' component

    Specifc button to use in the 'smooth alert dialog'. Created because the
    'smooth simple button' creates a render box problem if multiple of them
    are in a horizontal group.

    * refactor: 💡 change the action buttons type requirement

    change from 'smooth simple button' to 'smooth action button'

    * docs: ✏️ change the action buttons type requirement in the doc

    * refactor: 💡 change the buttons in the smooth alert dialogues

    change the buttons to the new type of button requirement

    * refactor: 💡 remove unused imports

    * Rename smoot_action_button.dart to smooth_action_button.dart

    * Update packages/smooth_app/lib/pages/user_preferences_profile.dart

    * Update packages/smooth_app/lib/pages/product/common/product_dialog_helper.dart

    * Update packages/smooth_app/lib/pages/product/common/product_list_dialog_helper.dart

    * Update packages/smooth_app/lib/pages/user_management/sign_up_page.dart

    * Update packages/smooth_app/lib/pages/user_preferences_settings.dart

    * Update packages/smooth_app/lib/views/bottom_sheet_views/user_contribution_view.dart

    * Update packages/smooth_ui_library/lib/dialogs/smooth_alert_dialog.dart

    * Update packages/smooth_app/lib/widgets/loading_dialog.dart

    * Update packages/smooth_app/lib/pages/product/nutrition_page_loaded.dart

    Co-authored-by: Moises Alonso <moises.alonso@codeminer42.com>
    Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>

commit d1194ad
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Sat Jan 22 17:10:48 2022 +0100

    chore: New Crowdin translations to review and merge (#997)

    * New Crowdin translations by Github Action (#677)

    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>

    * chore: New Crowdin translations

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
    Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
    Co-authored-by: M123-dev <marvinmoel05@gmail.com>

commit 6f20c50
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 16:09:57 2022 +0100

    Update dependabot.yml

commit 3d4bc59
Author: monsieurtanuki <fabrice_fontaine@hotmail.com>
Date:   Sat Jan 22 11:11:28 2022 +0100

    fix: lifecycle refactoring (#995)

    Renamed file:
    * `lifecycle_manager.dart`: was `scanner_state_manager.dart`; renamed `onStop` in `onPause`

    Impacted files:
    * `continuous_scan_page.dart`: refactored
    * `labeler.yaml`: refactored
    * `ml_kit_scan_page.dart`: refactored

commit 72a2f27
Author: Marvin M <39344769+M123-dev@users.noreply.github.com>
Date:   Sat Jan 22 10:54:27 2022 +0100

    fix: Camera state management  (#990)

    * fix: Camera state management

    * Extracted lifecycle to own ScannerStateManager

    * Update ml_kit_scan_page.dart

    * Review

commit ecdc37f
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Fri Jan 21 20:02:39 2022 +0100

    tag-picker-autolabeler (#988)

    * tag-picker-autolabeler

    tag-picker-autolabeler

    * Update labeler.yml

    * Update labeler.yml

commit 4f7c448
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Fri Jan 21 14:25:49 2022 +0100

    chore: New Crowdin translations to review and merge (#992)

    * New Crowdin translations by Github Action (#677)

    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>

    * chore: New Crowdin translations

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
    Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
    Co-authored-by: M123-dev <marvinmoel05@gmail.com>

commit 692de25
Author: jasmeet0817 <jasmeet0817@gmail.com>
Date:   Thu Jan 20 21:48:53 2022 +0100

    Add new product addition page [partial impl] (#989)

commit 954449e
Author: monsieurtanuki <fabrice_fontaine@hotmail.com>
Date:   Thu Jan 20 20:28:07 2022 +0100

    feat: #935 - now we display localized (downloaded) data during onboarding (#986)

    Deleted files:
    * `sample_eco_knowledge_panels.json`: replaced by new file `sample_knowledge_panels.json`
    * `sample_health_knowledge_panels.json`: replaced by new file `sample_knowledge_panels.json`

    New files:
    * `abstract_onboarding_data.dart`: Abstraction of data we download, store and reuse at onboarding.
    * `dao_string.dart`: Where we store strings.
    * `loading_dialog.dart`: Dialog with a stop button, while a future is running.
    * `onboarding_data_knowledge_panels.dart`: Helper around knowledge panels we download, store and reuse at onboarding.
    * `onboarding_data_product.dart`: Helper around a product we download, store and reuse at onboarding.
    * `onboarding_loader.dart`: Helper around data we download, store and reuse at onboarding.
    * `sample_knowledge_panels.json`: json data downloaded today for en_US, cf. onboarding_data_knowledge_panels.dart
    * `tmp.dart`: Fixes to off-dart.

    Impacted files:
    * `knowledge_panel_page_template.dart`: added parameters to 1. use the database (and downloaded data) and 2. limit the display to a given panel
    * `knowlegde_panel_builder.dart`: added a method to display only one panel
    * `local_database.dart`: added new dao `DaoString`
    * `new_product_page.dart`: refactored
    * `next_button.dart`: added an optional call to async methods at "next" time - e.g. data download
    * `nutrition_page_loaded.dart`: now uses the new `LoadingDialog`
    * `onboarding_flow_navigator.dart`: now using the database to get more relevant (previoulsy downloaded) data
    * `preferences_page.dart`: now using previously downloaded data instead of assets
    * `product_dialog_helper.dart`: now uses the new `LoadingDialog`
    * `question_card.dart`: unrelated minor refactoring
    * `sample_eco_card_page.dart`: now using previously downloaded data instead of assets, and displaying only the environment card
    * `sample_health_card_page.dart`: now using previously downloaded data instead of assets, and displaying only the health card
    * `sample_product_json.dart`: json data downloaded today for en_US, cf. onboarding_data_product.dart
    * `sign_up_page.dart`: now uses the new `LoadingDialog`

commit fe682a6
Author: Moises <50844424+gatodenegocios@users.noreply.github.com>
Date:   Wed Jan 19 13:49:00 2022 -0300

    feat: sign out confirmation step. Issue: #884 (#979)

    * feat: 🎸 add a confirmation step to log out

    * fix: 🐛 Change the 'log out' term to 'sign out'

    * refactor: 💡 Change the alert dialogue to smooth alert dialog

    * refactor: 💡 removing unused variable 'theme'

    * refactor: 💡 specifying widgets on SmoothAlertDialog actions

    Co-authored-by: Moises Alonso <moises.alonso@codeminer42.com>

commit 6a166aa
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Wed Jan 19 12:17:47 2022 +0100

    chore: New Crowdin translations to review and merge (#978)

    * New Crowdin translations by Github Action (#677)

    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>

    * chore: New Crowdin translations

    * Update packages/smooth_app/lib/l10n/app_es.arb

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
    Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
    Co-authored-by: M123-dev <marvinmoel05@gmail.com>

commit 76f29c8
Author: monsieurtanuki <fabrice_fontaine@hotmail.com>
Date:   Wed Jan 19 10:09:36 2022 +0100

    feat: #931 - displaying the history in dialog instead of log print (#983)

    Impacted files:
    * `smooth_app/pubspec.yaml`: upgraded
    * `smooth_ui_library/pubspec.yaml`: upgraded
    * `smooth_app/pubspec.lock`: impacted by yaml upgrade
    * `smooth_ui_library/pubspec.lock`: impacted by yaml upgrade
    * `smooth_ui_library/example/pubspec.lock`: impacted by yaml upgrade
    * `user_preferences_dev_mode.dart`: displaying the history in dialog instead of log print

commit e7ebbb7
Author: monsieurtanuki <fabrice_fontaine@hotmail.com>
Date:   Wed Jan 19 09:48:30 2022 +0100

    feat: #880 - cosmetic changes and refactoring (#985)

    Impacted files:
    * `app_en.arb`: added a label for "unknown match"
    * `app_fr.arb`: added a label for "unknown match"
    * `personalized_ranking_page.dart`: added style for selected/unselected tab; added label for "unknown match"; added label even when empty list; now using new enum `MatchTab` in order to prevent confusion between indices
    * `smooth_it_model.dart`: added enum `MatchTab` and refactored accordingly

commit e145883
Author: monsieurtanuki <fabrice_fontaine@hotmail.com>
Date:   Tue Jan 18 19:13:57 2022 +0100

    feat: #880 - ranking page similar to mock-ups (#984)

    Impacted files:
    * `app_en.arb`: added 3 labels
    * `app_fr.arb`: added 3 labels
    * `personalized_ranking_page.dart`: reordered the tabs; now using tabs instead of bottom navigation bar; added optional subtitle
    * `smooth_it_model.dart`: removed now useless method and field

commit 8cb5529
Author: jasmeet0817 <jasmeet0817@gmail.com>
Date:   Tue Jan 18 16:09:44 2022 +0100

    Set min length for columns in a row (#980)

    * Scan example onboarding page: Switch svgs of ecoscore and nutriscore

    * Set min length for columns in a row

    * Format

    Co-authored-by: Jasmeet Singh <jasmeetsingh@google.com>
M123-dev added a commit that referenced this pull request Jan 23, 2022
commit 738fdf9
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sun Jan 23 16:43:17 2022 +0100

    autolabeler-issue-improvements (#1001)

    autolabeler-issue-improvements

commit 5fe7abc
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 21:07:51 2022 +0100

    Update issue-labeler-v1.yml

commit 9b227cb
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 21:06:22 2022 +0100

    Update issue-labeler-v1.yml

commit 20fce2e
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 21:03:22 2022 +0100

    Update and rename issue-labeler.yml to issue-labeler-v1.yml

commit 63ae13a
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 21:01:45 2022 +0100

    Update issue-label.yml

commit a1051cc
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 20:58:39 2022 +0100

    Rename issue-autolabel.yml to issue-labeler.yml

commit bf977a5
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 20:56:19 2022 +0100

    Create issue-label.yml (#1000)

    * Create issue-label.yml

    * Create issue-autolabel.yml

commit 8adcc60
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 20:50:55 2022 +0100

    Update labeler.yml

commit 8cbca14
Author: Moises <50844424+gatodenegocios@users.noreply.github.com>
Date:   Sat Jan 22 13:13:08 2022 -0300

    fix: bug "Smooth Simple Button" in "SmoothAlertDialogue". issue #993 (#994)

    * feat: 🎸 create 'smooth action button' component

    Specifc button to use in the 'smooth alert dialog'. Created because the
    'smooth simple button' creates a render box problem if multiple of them
    are in a horizontal group.

    * refactor: 💡 change the action buttons type requirement

    change from 'smooth simple button' to 'smooth action button'

    * docs: ✏️ change the action buttons type requirement in the doc

    * refactor: 💡 change the buttons in the smooth alert dialogues

    change the buttons to the new type of button requirement

    * refactor: 💡 remove unused imports

    * Rename smoot_action_button.dart to smooth_action_button.dart

    * Update packages/smooth_app/lib/pages/user_preferences_profile.dart

    * Update packages/smooth_app/lib/pages/product/common/product_dialog_helper.dart

    * Update packages/smooth_app/lib/pages/product/common/product_list_dialog_helper.dart

    * Update packages/smooth_app/lib/pages/user_management/sign_up_page.dart

    * Update packages/smooth_app/lib/pages/user_preferences_settings.dart

    * Update packages/smooth_app/lib/views/bottom_sheet_views/user_contribution_view.dart

    * Update packages/smooth_ui_library/lib/dialogs/smooth_alert_dialog.dart

    * Update packages/smooth_app/lib/widgets/loading_dialog.dart

    * Update packages/smooth_app/lib/pages/product/nutrition_page_loaded.dart

    Co-authored-by: Moises Alonso <moises.alonso@codeminer42.com>
    Co-authored-by: Pierre Slamich <pierre.slamich@gmail.com>

commit d1194ad
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Sat Jan 22 17:10:48 2022 +0100

    chore: New Crowdin translations to review and merge (#997)

    * New Crowdin translations by Github Action (#677)

    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>

    * chore: New Crowdin translations

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
    Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
    Co-authored-by: M123-dev <marvinmoel05@gmail.com>

commit 6f20c50
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Sat Jan 22 16:09:57 2022 +0100

    Update dependabot.yml

commit 3d4bc59
Author: monsieurtanuki <fabrice_fontaine@hotmail.com>
Date:   Sat Jan 22 11:11:28 2022 +0100

    fix: lifecycle refactoring (#995)

    Renamed file:
    * `lifecycle_manager.dart`: was `scanner_state_manager.dart`; renamed `onStop` in `onPause`

    Impacted files:
    * `continuous_scan_page.dart`: refactored
    * `labeler.yaml`: refactored
    * `ml_kit_scan_page.dart`: refactored

commit 72a2f27
Author: Marvin M <39344769+M123-dev@users.noreply.github.com>
Date:   Sat Jan 22 10:54:27 2022 +0100

    fix: Camera state management  (#990)

    * fix: Camera state management

    * Extracted lifecycle to own ScannerStateManager

    * Update ml_kit_scan_page.dart

    * Review

commit ecdc37f
Author: Pierre Slamich <pierre@openfoodfacts.org>
Date:   Fri Jan 21 20:02:39 2022 +0100

    tag-picker-autolabeler (#988)

    * tag-picker-autolabeler

    tag-picker-autolabeler

    * Update labeler.yml

    * Update labeler.yml

commit 4f7c448
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Fri Jan 21 14:25:49 2022 +0100

    chore: New Crowdin translations to review and merge (#992)

    * New Crowdin translations by Github Action (#677)

    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>

    * chore: New Crowdin translations

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
    Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
    Co-authored-by: M123-dev <marvinmoel05@gmail.com>

commit 692de25
Author: jasmeet0817 <jasmeet0817@gmail.com>
Date:   Thu Jan 20 21:48:53 2022 +0100

    Add new product addition page [partial impl] (#989)

commit 954449e
Author: monsieurtanuki <fabrice_fontaine@hotmail.com>
Date:   Thu Jan 20 20:28:07 2022 +0100

    feat: #935 - now we display localized (downloaded) data during onboarding (#986)

    Deleted files:
    * `sample_eco_knowledge_panels.json`: replaced by new file `sample_knowledge_panels.json`
    * `sample_health_knowledge_panels.json`: replaced by new file `sample_knowledge_panels.json`

    New files:
    * `abstract_onboarding_data.dart`: Abstraction of data we download, store and reuse at onboarding.
    * `dao_string.dart`: Where we store strings.
    * `loading_dialog.dart`: Dialog with a stop button, while a future is running.
    * `onboarding_data_knowledge_panels.dart`: Helper around knowledge panels we download, store and reuse at onboarding.
    * `onboarding_data_product.dart`: Helper around a product we download, store and reuse at onboarding.
    * `onboarding_loader.dart`: Helper around data we download, store and reuse at onboarding.
    * `sample_knowledge_panels.json`: json data downloaded today for en_US, cf. onboarding_data_knowledge_panels.dart
    * `tmp.dart`: Fixes to off-dart.

    Impacted files:
    * `knowledge_panel_page_template.dart`: added parameters to 1. use the database (and downloaded data) and 2. limit the display to a given panel
    * `knowlegde_panel_builder.dart`: added a method to display only one panel
    * `local_database.dart`: added new dao `DaoString`
    * `new_product_page.dart`: refactored
    * `next_button.dart`: added an optional call to async methods at "next" time - e.g. data download
    * `nutrition_page_loaded.dart`: now uses the new `LoadingDialog`
    * `onboarding_flow_navigator.dart`: now using the database to get more relevant (previoulsy downloaded) data
    * `preferences_page.dart`: now using previously downloaded data instead of assets
    * `product_dialog_helper.dart`: now uses the new `LoadingDialog`
    * `question_card.dart`: unrelated minor refactoring
    * `sample_eco_card_page.dart`: now using previously downloaded data instead of assets, and displaying only the environment card
    * `sample_health_card_page.dart`: now using previously downloaded data instead of assets, and displaying only the health card
    * `sample_product_json.dart`: json data downloaded today for en_US, cf. onboarding_data_product.dart
    * `sign_up_page.dart`: now uses the new `LoadingDialog`

commit fe682a6
Author: Moises <50844424+gatodenegocios@users.noreply.github.com>
Date:   Wed Jan 19 13:49:00 2022 -0300

    feat: sign out confirmation step. Issue: #884 (#979)

    * feat: 🎸 add a confirmation step to log out

    * fix: 🐛 Change the 'log out' term to 'sign out'

    * refactor: 💡 Change the alert dialogue to smooth alert dialog

    * refactor: 💡 removing unused variable 'theme'

    * refactor: 💡 specifying widgets on SmoothAlertDialog actions

    Co-authored-by: Moises Alonso <moises.alonso@codeminer42.com>

commit 6a166aa
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Wed Jan 19 12:17:47 2022 +0100

    chore: New Crowdin translations to review and merge (#978)

    * New Crowdin translations by Github Action (#677)

    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>

    * chore: New Crowdin translations

    * Update packages/smooth_app/lib/l10n/app_es.arb

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
    Co-authored-by: Pierre Slamich <pierre@openfoodfacts.org>
    Co-authored-by: M123-dev <marvinmoel05@gmail.com>

commit 76f29c8
Author: monsieurtanuki <fabrice_fontaine@hotmail.com>
Date:   Wed Jan 19 10:09:36 2022 +0100

    feat: #931 - displaying the history in dialog instead of log print (#983)

    Impacted files:
    * `smooth_app/pubspec.yaml`: upgraded
    * `smooth_ui_library/pubspec.yaml`: upgraded
    * `smooth_app/pubspec.lock`: impacted by yaml upgrade
    * `smooth_ui_library/pubspec.lock`: impacted by yaml upgrade
    * `smooth_ui_library/example/pubspec.lock`: impacted by yaml upgrade
    * `user_preferences_dev_mode.dart`: displaying the history in dialog instead of log print

commit e7ebbb7
Author: monsieurtanuki <fabrice_fontaine@hotmail.com>
Date:   Wed Jan 19 09:48:30 2022 +0100

    feat: #880 - cosmetic changes and refactoring (#985)

    Impacted files:
    * `app_en.arb`: added a label for "unknown match"
    * `app_fr.arb`: added a label for "unknown match"
    * `personalized_ranking_page.dart`: added style for selected/unselected tab; added label for "unknown match"; added label even when empty list; now using new enum `MatchTab` in order to prevent confusion between indices
    * `smooth_it_model.dart`: added enum `MatchTab` and refactored accordingly

commit e145883
Author: monsieurtanuki <fabrice_fontaine@hotmail.com>
Date:   Tue Jan 18 19:13:57 2022 +0100

    feat: #880 - ranking page similar to mock-ups (#984)

    Impacted files:
    * `app_en.arb`: added 3 labels
    * `app_fr.arb`: added 3 labels
    * `personalized_ranking_page.dart`: reordered the tabs; now using tabs instead of bottom navigation bar; added optional subtitle
    * `smooth_it_model.dart`: removed now useless method and field

commit 8cb5529
Author: jasmeet0817 <jasmeet0817@gmail.com>
Date:   Tue Jan 18 16:09:44 2022 +0100

    Set min length for columns in a row (#980)

    * Scan example onboarding page: Switch svgs of ecoscore and nutriscore

    * Set min length for columns in a row

    * Format

    Co-authored-by: Jasmeet Singh <jasmeetsingh@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🤳🥫 Scan We need to be able to scan on low-end, old devices, even with a bad camera, connexion…
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants